import FilesManagers.CantOpenFileException;
import FilesManagers.FileManager;
import FilesManagers.NoMoreLinesException;
import FilesManagers.RemoteUrlManager;
import Filters.CharacterUnifier;
import Filters.HtmlCleaner;
import Filters.Stemming;
import Filters.StopWordsCleaner;

/*
 *FIXME - Agregar excepciones a todo. 
 * */

public class ClasePrincipal {


	public static void main (String args[]){
		String linea="";
		long contadorUrls=0;
		FileManager manejadorArchivo = new FileManager();
		FileManager manejadorUrls = new FileManager();
		HtmlCleaner miHtmlCleaner = new HtmlCleaner();
		
		try{
			StopWordsCleaner limpiadorStopWords = new StopWordsCleaner("stopwords.conf");
			Stemming stemming = new Stemming("stemming.conf");
			CharacterUnifier unificadorCaracteres = new CharacterUnifier();
			RemoteUrlManager urlRemota = new RemoteUrlManager();
			
			manejadorUrls.cargarArchivo("urls.txt");
			manejadorUrls.setMarcadorComentario('#');
			try{
				while(((linea = manejadorUrls.obtenerSiguienteLinea())!=null)){
					contadorUrls++;
					System.out.println("**************************");
					System.out.println("La URL numero "+contadorUrls+" es "+linea);
					System.out.println("**************************");
					/*El primer parametro es la url remota, el segundo el nombre que le quiero poner en disco, si se deja vacio usa el mismo nombre del html remoto*/
					urlRemota.copiar(linea,"pepe.html");
					
					/*Tendria que repetir este proceso por cada HTML que lea - falta stemming, contruccion de indice,etc*/
					manejadorArchivo.cargarArchivo("pepe.html",urlRemota.getCodificacion());
					try{
						while((linea = manejadorArchivo.obtenerSiguienteLinea())!=null){
				
								linea = miHtmlCleaner.procesarLinea(linea);
								
								linea = unificadorCaracteres.procesarLinea(linea);
								linea = limpiadorStopWords.procesarLinea(linea);
								linea = stemming.procesarLinea(linea);
								
								/*Por ahora solo imprimo por pantalla*/
								if(linea.trim().compareTo("")!=0) System.out.println(linea);
				
						}
					}catch(NoMoreLinesException e){
						System.out.println(e.getMessage());
						
					}
				}
			}catch(NoMoreLinesException e){
				System.out.println(e.getMessage());
				
			}
		}catch(CantOpenFileException e){
			System.out.println(e.getMessage());
		
		}
		





	}



}